package com.itheima.d1_arrays;

import com.itheima.d1_arrays.bean.Student;

import java.util.Arrays;
import java.util.Comparator;

/**
 *
 * 能够被Arrays.sort排序的数组，其元素必须是可以比较的。必须要实现一个接口 Comparable  基本类型可以直接排序
 */
public class ArraysTest2 {
    public static void main(String[] args) {
        // 目标：掌握如何对数组中的对象进行排序。
        Student[] students = new Student[4];
        students[0] = new Student("蜘蛛精", 169.5, 23);
        students[1] = new Student("紫霞", 163.8, 26);
        students[2] = new Student("紫霞", 163.8, 26);
        students[3] = new Student("至尊宝", 167.5, 24);


        // 1、public static void sort(类型[] arr)：对数组进行排序。
        Arrays.sort(students);
        System.out.println("Arrays.toString(students) = " + Arrays.toString(students));


        // 2、public static <T> void sort(T[] arr, Comparator<? super T> c)
        //如果原来的排序不是我们想要的或者原来的类型不具备排序能能力，可以使用当前方法完成

        //学生数组原来是升高的降序排序，现在我想要年龄的升序排序，不能改变原来类的代码。只能自定义一个比较器
        Arrays.sort(students, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                //升序就是 o1-o2
                //年龄升序排序
                return Integer.compare(o1.getAge(),o2.getAge());
            }
        });

        Arrays.sort(students, (Student o1, Student o2)->{
                //升序就是 o1-o2
                //年龄升序排序
                return Integer.compare(o1.getAge(),o2.getAge());
            });


        System.out.println("Arrays.toString(students) = " + Arrays.toString(students));



    }
}
